--[[
模块名称：light
模块功能：GPS指示灯控制
模块最后修改时间：2017.08.25
]]
require"netLed"

module(...,package.seeall)

local ONTIME,OFFTIME = 1000,1000
-- local ONTIME,OFFTIME = 300,300

-- 0:常灭 1:常亮 2:闪烁
local ledgps,ledgsm = 0,0

local function print(...)
	_G.print("--zbb--light",...)
end

--[[
函数名：gprsready
功能  ：根据gprs上报的消息控制gsm灯状态
参数  ：gprs状态
返回值：无
]]
local function gprsready(suc)
	ledgsm = suc and 1 or 2
end

--[[
函数名：gpstateind
功能  ：根据GPS上报的消息控制GPS灯状态
参数  ：无
返回值：true
]]
local function gpstateind(evt)
	print("light.gpstateind",evt)
	if evt == "LOCATION_SUCCESS" then
		ledgps = 1
	elseif evt == "OPEN" or evt == "LOCATION_FAIL" then
		ledgps = 2
		netLed.setup(true,pincfg.LED_GSM)
	elseif evt == "CLOSE" then
		ledgps = 0
		if not chg.getcharger() then
			netLed.setup(false)
		end	
	end
	return true
end

local function chgind(e,val)
	print("chgind",e,val)
	if e=="CHARGER" then
		pincfg.LED_PW(val)
	end
	return true
end

--注册消息的处理函数
sys.subscribe("DEV_CHG_IND",chgind)
sys.subscribe("GPS_STATE",gpstateind)

--[[
函数名：set
功能  ：根据灯的状态设置对应的PIN脚值
参数  ：无
返回值：无
]]
local function set(pin,mode,val)
	--print("set",pin,mode,val)
	if mode == 0 then
		pin(0)
	elseif mode == 1 then
		pin(1)    
	elseif mode == 2 then
		pin(val)    
	end    
end

--[[
函数名：blinkoff
功能  ：控制灯为关闭状态
参数  ：无
返回值：无
]]
local function blinkoff()
	set(pincfg.LED_GPS,ledgps,0)
	sys.timerStart(blinkon,OFFTIME)
end

--[[
函数名：blinkon
功能  ：控制灯为打开状态
参数  ：无
返回值：无
]]
function blinkon()
	set(pincfg.LED_GPS,ledgps,1)
	sys.timerStart(blinkoff,ONTIME)
end

function stopalled()
	print("stopalled")	
	pincfg.LED_GPS(0)
	pincfg.LED_PW(0)
	netLed.setup(false)
end

local num = 1
function factest(num)
	stopalled()
	if num%3 == 1 then
		pincfg.LED_PW(1)
	elseif num%3 == 2 then
		netLed.setup(true,pincfg.LED_GSM)
	else
		pincfg.LED_GPS(1)
	end
	num = num + 1
	sys.timerStart(factest,200,num)
end

sys.timerStart(blinkon,OFFTIME)

netLed.setup(true,pincfg.LED_GSM)
netLed.updateBlinkTime("SCK",0xFFFF,0)
chg.getcharger()
